[자바의 신] 2장 ~ 7장¶
2장: Hello God of Java¶
- 핵심 키워드
- JDK
- main 메서드
JDK¶
JDK(Java Delvelopment Kit)를 설치하면 자바로 코드를 작성하고, 컴파일하고 실행할 수 있다. 다음은 HelloWorld.java라는 파일을 컴파일하고 실행하는 예시이다.
- 컴파일:
javac HelloWorld.java
.java
파일을 컴파일하면 확장자가.class
인 바이너리 파일이 생성된다.
- 실행:
java HelloWorld.class
.class
파일을 실행하면 JVM(Java Virtual Machine) 위에서 실행된다.
main 메서드¶
java 명령어로 코드를 실행하면 해당 클래스의 main 메서드가 실행된다. main 메서드의 작성법은 다음과 같다.
public class HelloWorld {
// main 메서드
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
해당 코드를 실행하면 Hello, World!가 출력될 것이다.
3장: 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요¶
- 핵심 키워드
- 클래스
- 생성자
- 메서드
- 객체, 인스턴스
클래스¶
자바는 객체 지향 프로그래밍 언어(Object Oriented Programming Language)로 현실 세계의 사물(Object)이나 추상적 것을 클래스로 표현할 수 있다. 클래스는 상태와 행동을 갖는데, 상태는 변수로 행동은 메서드로 표현한다.
다음은 사람을 클래스로 표현한 코드이다.
public class Person {
// 사람의 상태인 이름, 나이, 체력을 변수로 표현
String name;
int age;
int energy;
// 사람의 행동인 인사하기, 일하기, 휴식하기를 메서드로 표현
public void greet() {
System.out.println("안녕하세요. 저는 " + age + "살 " + name + "에요.");
}
public void work() {
if (energy > 0) {
energy--;
} else {
System.out.println("휴식이 필요합니다.");
}
}
public void rest() {
energy++;
System.out.println("체력이 회복 되었습니다.");
}
}
생성자와 인스턴스¶
대부분의 클래스는 스스로 작업을 하지 못하기 떄문에 new
예약어와 함께 생성자를 호출하여 객체(인스턴스)를 만들고 작업을 처리해야 한다.
생성자에 인자를 넘겨 객체의 값을 초기화 할 수 있다.
// 생성자가 추가된 Person 클래스
public class Person {
// 상태인 이름, 나이, 체력을 변수로 표현
String name;
int age;
int energy;
// 생성자는 클래스와 이름이 같고 리턴타입이 없다.
public Person(String nmae, int age, int energy) {
this.name = name;
this.age = age;
this.energy = energy;
}
public void greet() {
System.out.println("안녕하세요. 저는 " + age + "살 " + name + "에요.");
}
public void work() {
if (energy > 0) {
energy--;
} else {
System.out.println("휴식이 필요합니다.");
}
}
public void rest() {
energy++;
System.out.println("체력이 회복 되었습니다.");
}
}
// Person 생성자를 호출해 객체를 생성하는 코드
public class Main {
public static void main(String args[]) {
Person chulsu = new Person("철수", 7, 10);
Person younghee = new Person("영희", 6, 1);
chulsu.greet(); // 안녕하세요. 저는 7살 철수에요.
younghee.work(); // 체력이 회복 되었습니다.
younghee.work(); // 휴식이 필요합니다.
}
}
4장: 정보를 어디에 넣고 싶은데¶
- 핵심 키워드
- 지역 변수(local variables)
- 매개 변수(parameters)
- 인스턴스 변수(instance variables)
- 클래스 변수(class variables)
- 자료형(data type)
자바 변수의 종류¶
자바의 변수는 4가지로 구분할 수 있다.
- 지역 변수(local variables)
- 위치: 중괄호 내에 선언된 변수
- 생명 주기: 중괄호 내에서만 유효하다.
- 매개 변수(parameters)
- 위치: 메서드에 넘겨주는 변수
- 생명 주기: 메서드 호출 시 생성되고 메서드 종료 시 소멸된다.
- 인스턴스 변수(instance variables)
- 위치: 메서드 밖, 클래스 안에 선언된 변수
- 생명 주기: 객체 생성 시 생명이 시작되고 다른 객체가 이를 참조하지 않으면 소멸된다.
- 클래스 변수(class variables)
- 위치: staic 예약어와 함께 메서드 밖, 클래스 안에 선언된 변수
- 생명 주기: 첫 클래스 호출 시 생명이 시작되고, 프로그램 종료 시 소멸된다.
자바의 자료형(data type)¶
자바의 자료형은 크게 기본 자료형(primitive type) 참조 자료형(reference type)으로 분류할 수 있다.
참조 자료형은 String과 new
예약어를 사용해서 초기화 해야 하는 자료형이고 기본 자료형은 그 외 모든 자료형이다.
기본 자료형¶
자바에는 아래와 같은 기본 자료형이 있다.
- 정수
- byte(-27 ~ 27 - 1)
- short(-215 ~ 215 - 1)
- int(-231 ~ 231 - 1)
- long(-263 ~ 263 - 1)
- char(0 ~ 216 - 1)
- 소수: float(32비트), double(64비트)
- 기타: boolean(true, false)
5장: 계산을 하고 싶어요¶
- 핵심 용어
- 형 변환(Casting)
기본형 타입변환¶
형 변환이란, 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것이다.
표현 범위가 좁은 자료형을 표현 범위가 넓은 자료형으로 형 변환하는 것은 문제가 되지 않으나, 그 반대의 경우는 데이터가 예상하지 못한 값으로 변환될 수 있기에 주의 해야 한다.
// 묵시적 형변환
int x = 50000;
long y = x;
// 명시적 형변환
long x = 50000;
int y = (int) x;
7장: 여러 데이터를 하나에 넣을 수는 없을까요?¶
- 핵심 키워드
- 배열(Array)
배열¶
배열은 한가지 타입에 대해 여러 값을 저장하는 자료구조다. 참고로 배열도 참조 자료형이다. 자바의 배열 사용법은 다음과 같다.
// 선언 및 초기화다.
int [] lottoNumers = new int[6];
// 값 지정
lottoNumbers[0] = 21;
lottoNumbers[1] = 9;
// 중괄호를 이용한 선언 및 초기화
// 절대 변경되지 않을 요소에 사용한다.
String [] weeks = {"웛", "화", "수", "목", "금", "토", "일"};
// 배열의 길이
weeks.length;
// 2차원 배열
int [][] twoDim = new int[2][3];
// 배열을 위한 for loop
for (String day: weeks) {
System.out.println(day);
}